InfiltrationInit Subroutine

public subroutine InfiltrationInit(inifile, soilMoisture, soilDepth)

Initialize evapotranspiration computation

Arguments

Type IntentOptional Attributes Name
character(len=*), intent(in) :: inifile
type(grid_real), intent(in) :: soilMoisture
type(grid_real), intent(in) :: soilDepth

Variables

Type Visibility Attributes Name Initial
type(IniList), public :: infiltini

Source Code

SUBROUTINE InfiltrationInit &
!
( inifile, soilMoisture, soilDepth )

IMPLICIT NONE

!Arguments with intent(in):
CHARACTER (LEN = *), INTENT(IN) :: inifile
TYPE (grid_real), INTENT (IN) :: soilMoisture
TYPE (grid_real), INTENT (IN) :: soilDepth

!local declarations:
TYPE (IniList) :: infiltini

!--------------------------------------end of declarations---------------------

!open and read configuration file
CALL IniOpen (inifile, infiltini)

!read infiltration model
infiltrationModel = IniReadInt ('model', infiltini)

!read number of subdivisions of soil layer
soilDivisions = IniReadInt ('ross-divisions', infiltini)

!check soil division and infiltration model
IF (soilDivisions > 1 .AND. infiltrationModel == SCS_CN .OR. &
    soilDivisions > 1 .AND. infiltrationModel == PHILIPEQ .OR. &
    soilDivisions > 1 .AND. infiltrationModel == GREEN_AMPT ) THEN
  
     CALL Catch ('warning', 'Infiltration', &
       'Infiltration model requires one subdivision of soil layer, divisions forced to 1')
     
     soilDivisions = 1
END IF

    
!read parameter assigning method 
parameterAssigningMethod = IniReadInt ('parameter-assigning-method', infiltini)

IF (parameterAssigningMethod == FROM_DB) THEN
    !check if all necessary info are defined
    IF (.NOT. KeyIsPresent ('soil-types-file', infiltini) ) THEN
       CALL Catch ('error', 'Infiltration', &
       'missing ''soil-types-file'' keyword in configuration file')
    END IF
    
    IF (.NOT. SectionIsPresent ('soil-type-map', infiltini) ) THEN
       CALL Catch ('error', 'Infiltration', &
       'missing ''soil-type-map'' section in configuration file')
    END IF
    
    !set parameter maps
     CALL SetParametersFromDB (infiltini, infiltrationModel)
    
ELSE
     CALL SetParametersFromFile (infiltini, infiltrationModel)
END IF


!used by Philip model 
IF (infiltrationModel == PHILIPEQ .OR. &
    infiltrationModel == GREEN_AMPT ) THEN
   CALL NewGrid (cuminf, mask, 0.)
   CALL NewGrid (ism, mask, 0.)
END IF

!used by SCS-CN
IF (infiltrationModel == SCS_CN) THEN
   CALL NewGrid (raincum, mask, 0.)
END IF

!when Richards equation solution is required, initialize Ross'parameters
IF (infiltrationModel == ROSS_BC) THEN
  CALL SetRichardsBC (mask, ksat, thetas, thetar, psdi, psic, &
                      soilDepth, soilMoisture, infiltini, soilDivisions)
END IF
    


!  Configuration terminated. Deallocate ini database
CALL IniClose (infiltini)  

RETURN
END SUBROUTINE InfiltrationInit